package almacenes.modelo.service.impl;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;

import almacenes.controlador.constantes.Constantes;
import almacenes.modelo.dao.ProveedorDao;
import almacenes.modelo.dao.impl.GeneralesDaoImpl;
import almacenes.modelo.dao.impl.ProveedorDaoImpl;
import almacenes.modelo.entidad.Proveedor;
import almacenes.modelo.entidad.TipoProveedor;
import almacenes.modelo.excepcion.ExcepcionGeneral;
import almacenes.modelo.service.ProveedorService;

public class ProveedorServiceImpl extends GeneralesDaoImpl implements ProveedorService {
	private Log logger = LogFactory.getLog(this.getClass());
	private ProveedorDao proveedorDao = new ProveedorDaoImpl();
	
	@Override
	public List<TipoProveedor> obtenerTiposDeProveedores()
			throws ExcepcionGeneral {
		this.logger.info("obtenerTiposDeProveedores");
			return this.proveedorDao.obtenerTiposDeProveedores(sesion);
	}
	@Override
	public List<Proveedor> obtenerProveedores() throws ExcepcionGeneral {
		try {
			return this.proveedorDao.obtenerProveedores();
		} catch (Exception ex) {
			String sMensaje = "No se puedo obtener los proveedores";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

	@Override
	public List<Proveedor> obtenerProveedoresOperadorLogistico() throws ExcepcionGeneral {
		try {
			return this.proveedorDao.obtenerProveedoresXTipo(Constantes.TIPO_PROVEEDOR_OP_LOGISTICO);
		} catch (Exception ex) {
			String sMensaje = "No se puedo obtener los proveedores por tipos de proveedores";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

	@Override
	public List<Proveedor> obtenerProveedoresPorTipo(byte iIdTipoProveedor)
			throws ExcepcionGeneral {
		this.logger.info("obtenerProveedoresPorTipo");
			return this.proveedorDao.obtenerProveedoresPorTipo(iIdTipoProveedor, sesion);
	}

	@Override
	public List<Proveedor> getListaProveedoresMain() throws ExcepcionGeneral {
		this.logger.info("getListaProveedoresMain");
		return this.proveedorDao.getProveedoresMain();
	}

	@Override
	public List<Proveedor> buscarProveedorMain(Proveedor objPro) throws ExcepcionGeneral {
		this.logger.info("buscarProveedorMain");
		return this.proveedorDao.buscaProveedoresMain(objPro);
	}

	@Override
	public List<TipoProveedor> getTiposProveedor() throws ExcepcionGeneral {
		this.logger.info("getTiposProveedor");
		return this.proveedorDao.getTiposProveerdor();
	}

	@Override
	public String insertProveedor(Proveedor objProv) throws ExcepcionGeneral {
		this.logger.info("insertProveedor");
		return this.proveedorDao.insertProveedor(objProv);
	}

	@Override
	public Proveedor getProveedorEdit(int idProv) throws ExcepcionGeneral {
		this.logger.info("insertProveedor");
		return this.proveedorDao.getProveedorEdit(idProv);
	}

	@Override
	public String updateProveedor(Proveedor objPro) throws ExcepcionGeneral {
		this.logger.info("updateProveedor");
		return this.proveedorDao.updateProveedor(objPro);
	}

}
